<?php

/**
 * Created by JetBrains PhpStorm.
 * User: xaviet
 * Date: 10/3/13
 * Time: 2:44 PM
 * To change this template use File | Settings | File Templates.
 */
class TreTodayCommon {

    public static function curl($url, $vars = NULL, $method = 'GET', $fl = 0, $head = 0, $nobody = 0) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        if ($method == 'POST') {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
        }
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1");
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_HEADER, $head);
        curl_setopt($ch, CURLOPT_NOBODY, $nobody);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_COOKIEFILE, true);
        curl_setopt($ch, CURLOPT_COOKIEJAR, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        ob_start();
        $result = curl_exec($ch);
        curl_close($ch);
        ob_end_clean();
        return $result;
    }

    public static function checkRemoteFile($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        // don't download content
        curl_setopt($ch, CURLOPT_NOBODY, 1);
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        if (curl_exec($ch) !== FALSE) {
            return true;
        } else {
            return false;
        }
    }

    public static function getExtension($fileName) {
        $explode = explode('.', $fileName);
        return strtolower(end($explode));

    }

    public static function getCorrectUrl($url) {
        $space = array("+", " ");
        return str_replace($space, "%20", $url);
    }

    public static function  create_thumbnail($img_path, $thumb_path, $thumb_w = null, $thumb_h = null) {
        // Lấy đuôi tập tin
        $ext = TreTodayCommon::getExtension($img_path);

        // Tạo ảnh mới sử dụng hàm trong thư viện gd
        if (!strcmp("jpg", $ext) || !strcmp("jpeg", $ext)) {
            $src_img = imagecreatefromjpeg($img_path);
        }

        if (!strcmp("png", $ext)) {
            $src_img = imagecreatefrompng($img_path);
        }

        if (!strcmp("gif", $ext)) {
            $src_img = imagecreatefromgif($img_path);
        }

        // Lấy kích thước của ảnh
        $old_x = imageSX($src_img);
        $old_y = imageSY($src_img);

        // Tính kích thước mới cho ảnh thumbnail
        // Nếu không điền kích thước thumbnail thì giữ nguyên kích thước ban đầu của ảnh
        if (!$thumb_w || !$thumb_h) {
            $thumb_w = $old_x;
            $thumb_h = $old_y;
        } // 	1. Tính tỷ lệ kích thước của ảnh ban đầu so với kích thước thumbnail cần tạo.
        //	2. Nếu tỷ lệ của width lớn hơn tỷ lệ của height, ta sẽ thu nhỏ ảnh theo tỷ lệ của width và ngược lại.
        else {
            $ratio1 = $old_x / $thumb_w;
            $ratio2 = $old_y / $thumb_h;
            if ($ratio1 > $ratio2) {
                $thumb_w = $thumb_w;
                $thumb_h = $old_y / $ratio1;
            } else {
                $thumb_h = $thumb_h;
                $thumb_w = $old_x / $ratio2;
            }
        }

        // Tạo ảnh trắng mới với tỷ lệ mới
        $dst_img = ImageCreateTrueColor($thumb_w, $thumb_h);

        // Copy ảnh cũ vào ảnh mới theo đúng tỷ lệ
        imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y);

        // Kết quả cuối cùng, xuất ảnh với tên ban đầu
        if (!strcmp("png", $ext))
            imagepng($dst_img, $thumb_path);
        else
            imagejpeg($dst_img, $thumb_path);

        // Hủy bộ nhớ cho cả ảnh nguồn và đích
        imagedestroy($dst_img);
        imagedestroy($src_img);
    }

    public static function getSEO($str) {
        $signed = array("à", "á", "ạ", "ả", "ã", "â", "ầ", "ấ", "ậ", "ẩ", "ẫ", "ă", "ằ", "ắ"
        , "ặ", "ẳ", "ẵ", "è", "é", "ẹ", "ẻ", "ẽ", "ê", "ề", "ế", "ệ", "ể", "ễ", "ì", "í", "ị", "ỉ", "ĩ",
            "ò", "ó", "ọ", "ỏ", "õ", "ô", "ồ", "ố", "ộ", "ổ", "ỗ", "ơ"
        , "ờ", "ớ", "ợ", "ở", "ỡ",
            "ù", "ú", "ụ", "ủ", "ũ", "ư", "ừ", "ứ", "ự", "ử", "ữ",
            "ỳ", "ý", "ỵ", "ỷ", "ỹ",
            "đ",
            "À", "Á", "Ạ", "Ả", "Ã", "Â", "Ầ", "Ấ", "Ậ", "Ẩ", "Ẫ", "Ă"
        , "Ằ", "Ắ", "Ặ", "Ẳ", "Ẵ",
            "È", "É", "Ẹ", "Ẻ", "Ẽ", "Ê", "Ề", "Ế", "Ệ", "Ể", "Ễ",
            "Ì", "Í", "Ị", "Ỉ", "Ĩ",
            "Ò", "Ó", "Ọ", "Ỏ", "Õ", "Ô", "Ồ", "Ố", "Ộ", "Ổ", "Ỗ", "Ơ"
        , "Ờ", "Ớ", "Ợ", "Ở", "Ỡ",
            "Ù", "Ú", "Ụ", "Ủ", "Ũ", "Ư", "Ừ", "Ứ", "Ự", "Ử", "Ữ",
            "Ỳ", "Ý", "Ỵ", "Ỷ", "Ỹ",
            "Đ", "ê", "ù", "à",
            " ", "`", "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "=", "+", "\\", "|",
            "[", "{", "]", "}",
            ";", ":", "'", "\"",
            ",", "<", ".", ">", "/", "?",
            "“", "”");

        $unsigned = array("a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a"
        , "a", "a", "a", "a", "a", "a",
            "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e",
            "i", "i", "i", "i", "i",
            "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o"
        , "o", "o", "o", "o", "o",
            "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u",
            "y", "y", "y", "y", "y",
            "d",
            "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"
        , "A", "A", "A", "A", "A",
            "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
            "I", "I", "I", "I", "I",
            "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"
        , "O", "O", "O", "O", "O",
            "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U",
            "Y", "Y", "Y", "Y", "Y",
            "D", "e", "u", "a",
            "-", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            "", "", "", "",
            "", "", "", "",
            "", "", "", "", "-", "",
            "", "");
        return strtolower(str_replace('---', '-', str_replace($signed, $unsigned, $str)));
    }

    public static function getPictureUrl($url) {
        if ($url == "") return $url;

        if (preg_match('/http:/', $url)) return $url;
        else {
            $url = TreTodayUrl::home() . '/pictures/tintuc/news_images/' . $url;
            return $url;
        }
    }

    public static function getBigThumbnail($url) {
        if ($url == "") return $url;
        if (preg_match('/http:/', $url) == false) {
            $url = TreTodayUrl::home() . '/pictures/tintuc/news_images/' . $url;
        }
        return str_replace('/thumbs', '', $url);
    }

    public static function formatDate($date, $format = 'm/d/Y H:i') {
        return date($format, $date);
    }

    public static function getArrayCityOfVietNam() {
        $city = array("66" => "Toàn quốc", "29" => "TP. Sài Gòn", "22" => "Hà Nội", "1" => "An Giang", "3" => "Bà Rịa - Vũng Tàu", "4" => "Bắc Cạn", "5" => "Bắc Giang", "2" => "Bạc Liêu", "6" => "Bắc Ninh", "7" => "Bến Tre", "9" => "Bình Định", "8" => "Bình Dương", "10" => "Bình Phước", "11" => "Bình Thuận", "12" => "Cà Mau", "14" => "Cần Thơ", "13" => "Cao Bằng", "15" => "Đà Nẵng", "16" => "Đắc Lắc", "63" => "Đắc Nông", "64" => "Điện Biên", "17" => "Đồng Nai", "19" => "Đồng Tháp", "20" => "Gia Lai", "21" => "Hà Giang", "23" => "Hà Nam", "24" => "Hà Tây", "25" => "Hà Tĩnh", "26" => "Hải Dương", "27" => "Hải Phòng", "65" => "Hậu Giang", "28" => "Hòa Bình", "30" => "Hưng Yên", "31" => "Khánh Hòa", "32" => "Kiên Giang", "33" => "Kon Tum", "34" => "Lai Châu", "37" => "Lâm Đồng", "35" => "Lạng Sơn", "36" => "Lào Cai", "38" => "Long An", "39" => "Nam Định", "40" => "Nghệ An", "41" => "Ninh Bình", "42" => "Ninh Thuận", "43" => "Phú Thọ", "44" => "Phú Yên", "45" => "Quảng Bình", "46" => "Quảng Nam", "47" => "Quảng Ngãi", "48" => "Quảng Ninh", "49" => "Quảng Trị", "51" => "Sóc Trăng", "50" => "Sơn La", "52" => "Tây Ninh", "53" => "Thái Bình", "54" => "Thái Nguyên", "55" => "Thanh Hóa", "56" => "Thừa Thiên Huế", "57" => "Tiền Giang", "58" => "Trà Vinh", "59" => "Tuyên Quang", "60" => "Vĩnh Long", "61" => "Vĩnh Phúc", "62" => "Yên Bái");
        return $city;
    }

    public static function getArrayStateOfUsa() {
        $state_array = array(
            'AL' => "Alabama",
            'AK' => "Alaska",
            'AZ' => "Arizona",
            'AR' => "Arkansas",
            'CA' => "California",
            'CO' => "Colorado",
            'CT' => "Connecticut",
            'DE' => "Delaware",
            'DC' => "District Of Columbia",
            'FL' => "Florida",
            'GA' => "Georgia",
            'HI' => "Hawaii",
            'ID' => "Idaho",
            'IL' => "Illinois",
            'IN' => "Indiana",
            'IA' => "Iowa",
            'KS' => "Kansas",
            'KY' => "Kentucky",
            'LA' => "Louisiana",
            'ME' => "Maine",
            'MD' => "Maryland",
            'MA' => "Massachusetts",
            'MI' => "Michigan",
            'MN' => "Minnesota",
            'MS' => "Mississippi",
            'MO' => "Missouri",
            'MT' => "Montana",
            'NE' => "Nebraska",
            'NV' => "Nevada",
            'NH' => "New Hampshire",
            'NJ' => "New Jersey",
            'NM' => "New Mexico",
            'NY' => "New York",
            'NC' => "North Carolina",
            'ND' => "North Dakota",
            'OH' => "Ohio",
            'OK' => "Oklahoma",
            'OR' => "Oregon",
            'PA' => "Pennsylvania",
            'RI' => "Rhode Island",
            'SC' => "South Carolina",
            'SD' => "South Dakota",
            'TN' => "Tennessee",
            'TX' => "Texas",
            'UT' => "Utah",
            'VT' => "Vermont",
            'VA' => "Virginia",
            'WA' => "Washington",
            'WV' => "West Virginia",
            'WI' => "Wisconsin",
            'WY' => "Wyoming"
        );
        return $state_array;
    }

    public static function getResizeImage($w, $h, $targetWidth = 200, $targetHeight = 150) {
        $sourceWidth = $w;
        $sourceHeight = $h;

        $sourceRatio = $sourceWidth / $sourceHeight;
        $targetRatio = $targetWidth / $targetHeight;

        if ($sourceRatio < $targetRatio) {
            $scale = $sourceWidth / $targetWidth;
        } else {
            $scale = $sourceHeight / $targetHeight;
        }

        $resizeWidth = (int)($sourceWidth / $scale);
        $resizeHeight = (int)($sourceHeight / $scale);

        $cropLeft = (int)(($resizeWidth - $targetWidth) / 2);
        $cropTop = (int)(($resizeHeight - $targetHeight) / 2);

        return array(
            'width' => $resizeWidth,
            'height' => $resizeHeight,
            'left' => $cropLeft,
            'top' => $cropTop
        );

    }

    public static function createFolder($name) {
        $base = dirname(Yii::getPathOfAlias('application')) . "/files/$name/";
        $year = date('Y');
        $month = date('m');
        $day = date('d');

        $url = $base . $year;
        if (!is_dir($base)) {
            mkdir($base, 0777);
        }
        if (!is_dir($url)) {
            mkdir($url, 0777);
        }
        if (!is_dir($url . '/' . $month)) {
            mkdir($url . '/' . $month, 0777);
        }
        if (!is_dir($url . '/' . $month . '/' . $day)) {
            mkdir($url . '/' . $month . '/' . $day, 0777);
        }
        return $url . '/' . $month . '/' . $day;
    }

    public static function generateImagePath($category, $fileName) {
        $year = date('Y');
        $month = date('m');
        $day = date('d');
        return "files/$category/$year/$month/$day/" . $fileName;
    }

    public static function formatPriceVND($priceFloat, $symbol) {

        if (strpos($priceFloat, '.') > 0) {
            return $priceFloat . ' ' . $symbol;
        }
        $symbol_thousand = '.';
        $decimal_place = 0;
        $priceFloat = floatval($priceFloat);
        $price = number_format($priceFloat, $decimal_place, '', $symbol_thousand);
        return $price . ' ' . $symbol;
    }

//    public static function formatPrice($price, $currency = "VNĐ") {
//
//        if ($price == '0' || strtolower($price) == 'call') return 'Call';
//        if ($currency == "VNĐ") {
//            return TreTodayCommon::formatPriceVND($price, $currency);
//        } else {
//            $result = number_format($price, 2);
//
//            return $result . ' USD';
//        }
//    }

    public static function formatPrice($floatcurr, $curr = "VND") {
        $currencies['ARS'] = array(2, ',', '.'); //  Argentine Peso
        $currencies['AMD'] = array(2, '.', ','); //  Armenian Dram
        $currencies['AWG'] = array(2, '.', ','); //  Aruban Guilder
        $currencies['AUD'] = array(2, '.', ' '); //  Australian Dollar
        $currencies['BSD'] = array(2, '.', ','); //  Bahamian Dollar
        $currencies['BHD'] = array(3, '.', ','); //  Bahraini Dinar
        $currencies['BDT'] = array(2, '.', ','); //  Bangladesh, Taka
        $currencies['BZD'] = array(2, '.', ','); //  Belize Dollar
        $currencies['BMD'] = array(2, '.', ','); //  Bermudian Dollar
        $currencies['BOB'] = array(2, '.', ','); //  Bolivia, Boliviano
        $currencies['BAM'] = array(2, '.', ','); //  Bosnia and Herzegovina, Convertible Marks
        $currencies['BWP'] = array(2, '.', ','); //  Botswana, Pula
        $currencies['BRL'] = array(2, ',', '.'); //  Brazilian Real
        $currencies['BND'] = array(2, '.', ','); //  Brunei Dollar
        $currencies['CAD'] = array(2, '.', ','); //  Canadian Dollar
        $currencies['KYD'] = array(2, '.', ','); //  Cayman Islands Dollar
        $currencies['CLP'] = array(0, '', '.'); //  Chilean Peso
        $currencies['CNY'] = array(2, '.', ','); //  China Yuan Renminbi
        $currencies['COP'] = array(2, ',', '.'); //  Colombian Peso
        $currencies['CRC'] = array(2, ',', '.'); //  Costa Rican Colon
        $currencies['HRK'] = array(2, ',', '.'); //  Croatian Kuna
        $currencies['CUC'] = array(2, '.', ','); //  Cuban Convertible Peso
        $currencies['CUP'] = array(2, '.', ','); //  Cuban Peso
        $currencies['CYP'] = array(2, '.', ','); //  Cyprus Pound
        $currencies['CZK'] = array(2, '.', ','); //  Czech Koruna
        $currencies['DKK'] = array(2, ',', '.'); //  Danish Krone
        $currencies['DOP'] = array(2, '.', ','); //  Dominican Peso
        $currencies['XCD'] = array(2, '.', ','); //  East Caribbean Dollar
        $currencies['EGP'] = array(2, '.', ','); //  Egyptian Pound
        $currencies['SVC'] = array(2, '.', ','); //  El Salvador Colon
        $currencies['ATS'] = array(2, ',', '.'); //  Euro
        $currencies['BEF'] = array(2, ',', '.'); //  Euro
        $currencies['DEM'] = array(2, ',', '.'); //  Euro
        $currencies['EEK'] = array(2, ',', '.'); //  Euro
        $currencies['ESP'] = array(2, ',', '.'); //  Euro
        $currencies['EUR'] = array(2, ',', '.'); //  Euro
        $currencies['FIM'] = array(2, ',', '.'); //  Euro
        $currencies['FRF'] = array(2, ',', '.'); //  Euro
        $currencies['GRD'] = array(2, ',', '.'); //  Euro
        $currencies['IEP'] = array(2, ',', '.'); //  Euro
        $currencies['ITL'] = array(2, ',', '.'); //  Euro
        $currencies['LUF'] = array(2, ',', '.'); //  Euro
        $currencies['NLG'] = array(2, ',', '.'); //  Euro
        $currencies['PTE'] = array(2, ',', '.'); //  Euro
        $currencies['GHC'] = array(2, '.', ','); //  Ghana, Cedi
        $currencies['GIP'] = array(2, '.', ','); //  Gibraltar Pound
        $currencies['GTQ'] = array(2, '.', ','); //  Guatemala, Quetzal
        $currencies['HNL'] = array(2, '.', ','); //  Honduras, Lempira
        $currencies['HKD'] = array(2, '.', ','); //  Hong Kong Dollar
        $currencies['HUF'] = array(0, '', '.'); //  Hungary, Forint
        $currencies['ISK'] = array(0, '', '.'); //  Iceland Krona
        $currencies['INR'] = array(2, '.', ','); //  Indian Rupee
        $currencies['IDR'] = array(2, ',', '.'); //  Indonesia, Rupiah
        $currencies['IRR'] = array(2, '.', ','); //  Iranian Rial
        $currencies['JMD'] = array(2, '.', ','); //  Jamaican Dollar
        $currencies['JPY'] = array(0, '', ','); //  Japan, Yen
        $currencies['JOD'] = array(3, '.', ','); //  Jordanian Dinar
        $currencies['KES'] = array(2, '.', ','); //  Kenyan Shilling
        $currencies['KWD'] = array(3, '.', ','); //  Kuwaiti Dinar
        $currencies['LVL'] = array(2, '.', ','); //  Latvian Lats
        $currencies['LBP'] = array(0, '', ' '); //  Lebanese Pound
        $currencies['LTL'] = array(2, ',', ' '); //  Lithuanian Litas
        $currencies['MKD'] = array(2, '.', ','); //  Macedonia, Denar
        $currencies['MYR'] = array(2, '.', ','); //  Malaysian Ringgit
        $currencies['MTL'] = array(2, '.', ','); //  Maltese Lira
        $currencies['MUR'] = array(0, '', ','); //  Mauritius Rupee
        $currencies['MXN'] = array(2, '.', ','); //  Mexican Peso
        $currencies['MZM'] = array(2, ',', '.'); //  Mozambique Metical
        $currencies['NPR'] = array(2, '.', ','); //  Nepalese Rupee
        $currencies['ANG'] = array(2, '.', ','); //  Netherlands Antillian Guilder
        $currencies['ILS'] = array(2, '.', ','); //  New Israeli Shekel
        $currencies['TRY'] = array(2, '.', ','); //  New Turkish Lira
        $currencies['NZD'] = array(2, '.', ','); //  New Zealand Dollar
        $currencies['NOK'] = array(2, ',', '.'); //  Norwegian Krone
        $currencies['PKR'] = array(2, '.', ','); //  Pakistan Rupee
        $currencies['PEN'] = array(2, '.', ','); //  Peru, Nuevo Sol
        $currencies['UYU'] = array(2, ',', '.'); //  Peso Uruguayo
        $currencies['PHP'] = array(2, '.', ','); //  Philippine Peso
        $currencies['PLN'] = array(2, '.', ' '); //  Poland, Zloty
        $currencies['GBP'] = array(2, '.', ','); //  Pound Sterling
        $currencies['OMR'] = array(3, '.', ','); //  Rial Omani
        $currencies['RON'] = array(2, ',', '.'); //  Romania, New Leu
        $currencies['ROL'] = array(2, ',', '.'); //  Romania, Old Leu
        $currencies['RUB'] = array(2, ',', '.'); //  Russian Ruble
        $currencies['SAR'] = array(2, '.', ','); //  Saudi Riyal
        $currencies['SGD'] = array(2, '.', ','); //  Singapore Dollar
        $currencies['SKK'] = array(2, ',', ' '); //  Slovak Koruna
        $currencies['SIT'] = array(2, ',', '.'); //  Slovenia, Tolar
        $currencies['ZAR'] = array(2, '.', ' '); //  South Africa, Rand
        $currencies['KRW'] = array(0, '', ','); //  South Korea, Won
        $currencies['SZL'] = array(2, '.', ', '); //  Swaziland, Lilangeni
        $currencies['SEK'] = array(2, ',', '.'); //  Swedish Krona
        $currencies['CHF'] = array(2, '.', '\''); //  Swiss Franc
        $currencies['TZS'] = array(2, '.', ','); //  Tanzanian Shilling
        $currencies['THB'] = array(2, '.', ','); //  Thailand, Baht
        $currencies['TOP'] = array(2, '.', ','); //  Tonga, Paanga
        $currencies['AED'] = array(2, '.', ','); //  UAE Dirham
        $currencies['UAH'] = array(2, ',', ' '); //  Ukraine, Hryvnia
        $currencies['USD'] = array(2, '.', ','); //  US Dollar
        $currencies['VUV'] = array(0, '', ','); //  Vanuatu, Vatu
        $currencies['VEF'] = array(2, ',', '.'); //  Venezuela Bolivares Fuertes
        $currencies['VEB'] = array(2, ',', '.'); //  Venezuela, Bolivar
        $currencies['VND'] = array(0, '', '.'); //  Viet Nam, Dong
        $currencies['VNĐ'] = array(0, '', '.'); //  Viet Nam, Dong
        $currencies['ZWD'] = array(2, '.', ' '); //  Zimbabwe Dollar

        if ($curr == "INR") {
            return TreTodayCommon::formatinr($floatcurr);
        } else {
            if ($floatcurr == 0) return "Call";
            return number_format($floatcurr, $currencies[$curr][0], $currencies[$curr][1], $currencies[$curr][2]) . ' ' . $curr;
        }
    }

    public static function formatinr($input) {
        //CUSTOM FUNCTION TO GENERATE ##,##,###.##
        $dec = "";
        $pos = strpos($input, ".");
        if ($pos === false) {
            //no decimals
        } else {
            //decimals
            $dec = substr(round(substr($input, $pos), 2), 1);
            $input = substr($input, 0, $pos);
        }
        $num = substr($input, -3); //get the last 3 digits
        $input = substr($input, 0, -3); //omit the last 3 digits already stored in $num
        while (strlen($input) > 0) //loop the process - further get digits 2 by 2
        {
            $num = substr($input, -2) . "," . $num;
            $input = substr($input, 0, -2);
        }
        return $num . $dec;
    }

    public static function getLocationName($id) {
        $city = TreTodayCommon::getArrayCityOfVietNam();
        return isset($city[$id]) ? $city[$id] : '';
    }

    public static function getCurrentUrl($port = ':6111') {
        $pageURL = 'http';
        if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {
            $pageURL .= "s";
        }
        $pageURL .= "://";
        if ($_SERVER["SERVER_PORT"] != "80") {
            $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
        } else {
            $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
        }
        return str_replace($port, '', $pageURL);
    }

    //region Backend
    public static function getShortContent($string, $length) {

        return htmlspecialchars_decode(mb_strimwidth($string, 0, $length, '...', 'utf-8'));
    }

    public static function removeSign($str) {
        $signed = array("à", "á", "ạ", "ả", "ã", "â", "ầ", "ấ", "ậ", "ẩ", "ẫ", "ă", "ằ", "ắ"
        , "ặ", "ẳ", "ẵ", "è", "é", "ẹ", "ẻ", "ẽ", "ê", "ề", "ế", "ệ", "ể", "ễ", "ì", "í", "ị", "ỉ", "ĩ",
            "ò", "ó", "ọ", "ỏ", "õ", "ô", "ồ", "ố", "ộ", "ổ", "ỗ", "ơ"
        , "ờ", "ớ", "ợ", "ở", "ỡ",
            "ù", "ú", "ụ", "ủ", "ũ", "ư", "ừ", "ứ", "ự", "ử", "ữ",
            "ỳ", "ý", "ỵ", "ỷ", "ỹ",
            "đ",
            "À", "Á", "Ạ", "Ả", "Ã", "Â", "Ầ", "Ấ", "Ậ", "Ẩ", "Ẫ", "Ă"
        , "Ằ", "Ắ", "Ặ", "Ẳ", "Ẵ",
            "È", "É", "Ẹ", "Ẻ", "Ẽ", "Ê", "Ề", "Ế", "Ệ", "Ể", "Ễ",
            "Ì", "Í", "Ị", "Ỉ", "Ĩ",
            "Ò", "Ó", "Ọ", "Ỏ", "Õ", "Ô", "Ồ", "Ố", "Ộ", "Ổ", "Ỗ", "Ơ"
        , "Ờ", "Ớ", "Ợ", "Ở", "Ỡ",
            "Ù", "Ú", "Ụ", "Ủ", "Ũ", "Ư", "Ừ", "Ứ", "Ự", "Ử", "Ữ",
            "Ỳ", "Ý", "Ỵ", "Ỷ", "Ỹ",
            "Đ", "ê", "ù", "à");
        $unsigned = array("a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a"
        , "a", "a", "a", "a", "a", "a",
            "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e",
            "i", "i", "i", "i", "i",
            "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o"
        , "o", "o", "o", "o", "o",
            "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u",
            "y", "y", "y", "y", "y",
            "d",
            "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"
        , "A", "A", "A", "A", "A",
            "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E",
            "I", "I", "I", "I", "I",
            "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"
        , "O", "O", "O", "O", "O",
            "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U",
            "Y", "Y", "Y", "Y", "Y",
            "D", "e", "u", "a");
        return str_replace($signed, $unsigned, $str);
    }

    //endregion

    public static function getUserIp($real = false) {
        if (getenv('HTTP_CLIENT_IP'))
            $ipaddress = getenv('HTTP_CLIENT_IP');
        else if (getenv('HTTP_X_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
        else if (getenv('HTTP_X_FORWARDED'))
            $ipaddress = getenv('HTTP_X_FORWARDED');
        else if (getenv('HTTP_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_FORWARDED_FOR');
        else if (getenv('HTTP_FORWARDED'))
            $ipaddress = getenv('HTTP_FORWARDED');
        else if (getenv('REMOTE_ADDR'))
            $ipaddress = getenv('REMOTE_ADDR');
        else
            $ipaddress = 'UNKNOWN';
        return $ipaddress;
    }

}